package org.osiris.client.proyectos;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.osiris.client.Privado;
import org.osiris.client.comandos.ComandoGestionProyectos;
import org.osiris.client.model.EstadoProyectoViewBean;
import org.osiris.client.model.IncertidumbreViewBean;
import org.osiris.client.model.PrioridadViewBean;
import org.osiris.client.model.ProyectoViewBean;
import org.osiris.client.model.RequisitoViewBean;
import org.osiris.client.model.ResumenProyectoMes;
import org.osiris.client.model.UsuarioViewBean;
import org.osiris.client.services.BussinessInterfaceService;
import org.osiris.client.services.BussinessInterfaceServiceAsync;
import org.osiris.client.utils.Constantes;
import org.osiris.client.utils.MasterGenerator;

import com.extjs.gxt.charts.client.Chart;
import com.extjs.gxt.charts.client.model.BarDataProvider;
import com.extjs.gxt.charts.client.model.ChartModel;
import com.extjs.gxt.charts.client.model.Legend;
import com.extjs.gxt.charts.client.model.LineDataProvider;
import com.extjs.gxt.charts.client.model.ScaleProvider;
import com.extjs.gxt.charts.client.model.Legend.Position;
import com.extjs.gxt.charts.client.model.charts.BarChart;
import com.extjs.gxt.charts.client.model.charts.LineChart;
import com.extjs.gxt.charts.client.model.charts.BarChart.BarStyle;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.TabItem;
import com.extjs.gxt.ui.client.widget.TabPanel;
import com.extjs.gxt.ui.client.widget.VerticalPanel;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.DateField;
import com.extjs.gxt.ui.client.widget.form.FieldSet;
import com.extjs.gxt.ui.client.widget.form.HtmlEditor;
import com.extjs.gxt.ui.client.widget.form.LabelField;
import com.extjs.gxt.ui.client.widget.form.TextArea;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.rpc.AsyncCallback;

public class AltaProyecto extends LayoutContainer {

	BussinessInterfaceServiceAsync bussinessInterfaceServiceAsync=BussinessInterfaceService.Util.getInstance();
	UsuarioViewBean usuario;
	Button btnVolver = new Button("Volver");
	Button btnGuardar = new Button("Guardar");
	TextField<String> referencia = new TextField<String>();
	TextField<String> cliente = new TextField<String>();
	TextField<String> nombre = new TextField<String>();
	ComboBox<UsuarioViewBean> responsable = MasterGenerator.getComboUsuarios();
	HtmlEditor descripcion = new HtmlEditor();
	ComboBox<EstadoProyectoViewBean> estado = MasterGenerator.getCombosEstadoProyecto();
	final ListStore<ResumenProyectoMes> store = new ListStore<ResumenProyectoMes>();
	DateField fechaalta = new DateField();
	TextArea resumen = new TextArea();
	DateField fechaInicio = new DateField();
	TabItem tbtmRequisitos = new TabItem("Requisitos");
	TabItem tbtmCambios = new TabItem("Cambios");
	TabPanel tabPanel = new TabPanel();
	ListStore <RequisitoViewBean> misRequisitos=new ListStore <RequisitoViewBean>();
	ListStore <RequisitoViewBean> otrosRequisitos=new ListStore <RequisitoViewBean>();
	
	public String queMes(int mes){
		String month=null;
		switch(mes){
			case 0:month="Enero";break;
			case 1:month="Febrero";break;
			case 2:month="Marzo";break;
			case 3:month="Abril";break;
			case 4:month="Mayo";break;
			case 5:month="Junio";break;
			case 6:month="Julio";break;
			case 7:month="Agosto";break;
			case 8:month="Septiemtre";break;
			case 9:month="Octubre";break;
			case 10:month="Noviembre";break;
			case 11:month="Diciembre";break;
		}return month;
	}
	public void rellenarhistoria(){
		store.removeAll();
			ResumenProyectoMes resumenProyectoMes;
			for(int x=0;x<12;x++){
				
				resumenProyectoMes=new ResumenProyectoMes();
				resumenProyectoMes.setmes(queMes(x));
				resumenProyectoMes.setcomplejidad(new Integer(((int)(Math.random()*10))));
				resumenProyectoMes.setincertidumbre((new Integer(((int)(Math.random()*10)))));
				resumenProyectoMes.setexposicion(new Integer(((int)(Math.random()*10))));
				GWT.log("add:"+resumenProyectoMes);
				store.add(resumenProyectoMes);
			}
		
	}
	ProyectoViewBean detalle;
	public AltaProyecto(ProyectoViewBean detail,UsuarioViewBean user) {
		detalle=detail;
		rellenarhistoria();
		final AsyncCallback<List<RequisitoViewBean>> callback=new AsyncCallback<List<RequisitoViewBean>>(){

			@Override
			public void onFailure(Throwable caught) {
				// TODO Auto-generated method stub

			}

			@Override
			public void onSuccess(List<RequisitoViewBean> result) {
				if(result!=null){
					otrosRequisitos.removeAll();
					otrosRequisitos.add(result);
				}
			}

		};

		final AsyncCallback<List<RequisitoViewBean>> callback2=new AsyncCallback<List<RequisitoViewBean>>(){

			@Override
			public void onFailure(Throwable caught) {
				// TODO Auto-generated method stub

			}

			@Override
			public void onSuccess(List<RequisitoViewBean> result) {
				if(result!=null){
					misRequisitos.removeAll();
					misRequisitos.add(result);
				}
			}

		};

		//Window.alert("detalle:"+detalle+" user:"+user);
		if(detalle==null){
			btnGuardar.setEnabled(true);
			referencia.setReadOnly(false);
			responsable.setReadOnly(false);
			nombre.setReadOnly(false);
			estado.setReadOnly(false);
			cliente.setReadOnly(false);		
			fechaalta.setValue(new Date());
			tbtmRequisitos.setEnabled(false);
			tbtmCambios.setEnabled(false);

		}else {
			referencia.setValue(detalle.getreferencia());
			referencia.setEnabled(false);
			cliente.setValue(detalle.getcliente());
			cliente.setEnabled(false);
			estado.setValue(new EstadoProyectoViewBean(1L,detalle.getestado()));
			estado.setEnabled(false);
			btnGuardar.setEnabled(false);
			nombre.setValue(detalle.getnombre());
			nombre.setEnabled(false);
			fechaalta.setValue(detalle.getfechaalta());		
			fechaalta.setEnabled(false);
			responsable.setValue(detalle.getresponsable());
			responsable.setEnabled(false);
			descripcion.setValue(detalle.getdescripcion());
			descripcion.setEnabled(false);
			fechaInicio.setValue(detalle.getfechainicio());
			fechaInicio.setEnabled(false);
			resumen.setValue(detalle.getresumen());
			resumen.setEnabled(false);
			bussinessInterfaceServiceAsync.buscarRequisitos(null, null, null, null, null, 
					null, null, null, null, null, null, null, null, null, 
					null, new ProyectoViewBean(detalle.getidProyecto(),detalle.getnombre()),null,false, 
					callback2);
			bussinessInterfaceServiceAsync.buscarRequisitos(null, null, null, null, 
					null, null, null, null, null, null, null, null, null, null, null, 
					new ProyectoViewBean(detalle.getidProyecto(),detalle.getnombre()),null,true, callback);
		}
		usuario=user;
		setSize("1024", "640");

		VerticalPanel verticalPanel = new VerticalPanel();
		verticalPanel.setHeight("690");

		

		TabItem tbtmInformacin = new TabItem("Informaci\u00F3n");

		VerticalPanel verticalPanel_2 = new VerticalPanel();
		verticalPanel_2.setSpacing(4);

		HorizontalPanel horizontalPanel_2 = new HorizontalPanel();
		horizontalPanel_2.setSpacing(5);

		LabelField lblfldNombre_1 = new LabelField("Nombre");
		lblfldNombre_1.setStyleName(Constantes.LETRA_NEGRITA);
		horizontalPanel_2.add(lblfldNombre_1);


		horizontalPanel_2.add(nombre);

		LabelField lblfldReferencia = new LabelField("Referencia");
		lblfldReferencia.setStyleName(Constantes.LETRA_NEGRITA);
		horizontalPanel_2.add(lblfldReferencia);


		horizontalPanel_2.add(referencia);

		LabelField lblfldCliente = new LabelField("Cliente");
		lblfldCliente.setStyleName(Constantes.LETRA_NEGRITA);
		horizontalPanel_2.add(lblfldCliente);

		horizontalPanel_2.add(cliente);

		LabelField lblfldResponsable = new LabelField("Responsable");
		lblfldResponsable.setStyleName(Constantes.LETRA_NEGRITA);
		horizontalPanel_2.add(lblfldResponsable);


		horizontalPanel_2.add(responsable);

		verticalPanel_2.add(horizontalPanel_2);
		horizontalPanel_2.setWidth("950");

		HorizontalPanel horizontalPanel_3 = new HorizontalPanel();
		horizontalPanel_3.setSpacing(5);

		LabelField lblfldUsuarioalta = new LabelField("Usuario alta");
		lblfldUsuarioalta.setStyleName(Constantes.LETRA_NEGRITA);
		horizontalPanel_3.add(lblfldUsuarioalta);

		TextField<String> usuario_alta = new TextField<String>();
		if(detalle==null){
			if(usuario.getemail()!=null)
			usuario_alta.setValue(usuario.getemail());
			else usuario_alta.setValue(usuario.getnombre()+" "+usuario.getprimerApellido());
		}
		horizontalPanel_3.add(usuario_alta);

		LabelField lblfldFechaAlta = new LabelField("Fecha alta");
		lblfldFechaAlta.setStyleName(Constantes.LETRA_NEGRITA);
		horizontalPanel_3.add(lblfldFechaAlta);


		fechaalta.setEnabled(false);
		horizontalPanel_3.add(fechaalta);
		fechaalta.setWidth("100");

		LabelField lblfldEstado_1 = new LabelField("Estado");
		lblfldEstado_1.setStyleName(Constantes.LETRA_NEGRITA);
		horizontalPanel_3.add(lblfldEstado_1);



		horizontalPanel_3.add(estado);

		LabelField lblfldFechaInicio = new LabelField("Fecha Inicio");
		lblfldFechaInicio.setStyleName(Constantes.LETRA_NEGRITA);
		horizontalPanel_3.add(lblfldFechaInicio);


		horizontalPanel_3.add(fechaInicio);


		verticalPanel_2.add(horizontalPanel_3);
		horizontalPanel_3.setWidth("950");

		FieldSet fldstCuadroDeMando = new FieldSet();
		if(detalle==null){
			fldstCuadroDeMando.setExpanded(false);
			fldstCuadroDeMando.setEnabled(false);
		}
		HorizontalPanel horizontalPanel_5 = new HorizontalPanel();
		horizontalPanel_5.setSpacing(5);

		LabelField lblfldNumeroDeRequisitos = new LabelField("Numero de requisitos");
		
		lblfldNumeroDeRequisitos.setStyleName(Constantes.LETRA_NEGRITA);
		horizontalPanel_5.add(lblfldNumeroDeRequisitos);

		TextField<Integer>numreq = new TextField<Integer>();
		if(detalle!=null){
			numreq.setValue(detalle.getnumreq());
		}
		horizontalPanel_5.add(numreq);

		LabelField lblfldPeticionesDeCambio = new LabelField("Peticiones de cambio pendientes");
		lblfldPeticionesDeCambio.setStyleName(Constantes.LETRA_NEGRITA);
		horizontalPanel_5.add(lblfldPeticionesDeCambio);

		TextField <Integer>petcambiopend = new TextField<Integer>();
		if(detalle!=null){
			petcambiopend.setValue(detalle.getpetcambpend());
		}
		horizontalPanel_5.add(petcambiopend);

		LabelField lblfldConfiltos = new LabelField("Conflictos");
		lblfldConfiltos.setStyleName(Constantes.LETRA_NEGRITA);
		horizontalPanel_5.add(lblfldConfiltos);

		TextField <Integer>conflictos = new TextField<Integer>();
		if(detalle!=null){
			conflictos.setValue(detalle.getconflictos());
		}
		
		horizontalPanel_5.add(conflictos);
		fldstCuadroDeMando.add(horizontalPanel_5);

		HorizontalPanel horizontalPanel_6 = new HorizontalPanel();
		horizontalPanel_6.setSpacing(5);

		LabelField lblfldComlejidadGlobal = new LabelField("Complejidad global");
		lblfldComlejidadGlobal.setStyleName(Constantes.LETRA_NEGRITA);
		horizontalPanel_6.add(lblfldComlejidadGlobal);

		TextField<Integer> complejidad = new TextField<Integer>();
		horizontalPanel_6.add(complejidad);
		if(detalle!=null){
			complejidad.setValue(detalle.getcomplejidadglobal());
		}

		LabelField lblfldPeticionesDeCambio_1 = new LabelField("Peticiones de cambio aceptadas");
		lblfldPeticionesDeCambio_1.setStyleName(Constantes.LETRA_NEGRITA);
		horizontalPanel_6.add(lblfldPeticionesDeCambio_1);

		TextField<Integer> petcambioacept = new TextField<Integer>();
		horizontalPanel_6.add(petcambioacept);
		if(detalle!=null){
			petcambioacept.setValue(detalle.getpeticionescambioaccep());
		}

		LabelField lblfldIncertidumbreGlobal = new LabelField("Incertidumbre global");
		lblfldIncertidumbreGlobal.setStyleName(Constantes.LETRA_NEGRITA);
		horizontalPanel_6.add(lblfldIncertidumbreGlobal);

		TextField <Integer>incertidumbre = new TextField<Integer>();
		if(detalle!=null){
			incertidumbre.setValue(detalle.getincertidumbreglobal());
		}
		horizontalPanel_6.add(incertidumbre);
		fldstCuadroDeMando.add(horizontalPanel_6);

		HorizontalPanel horizontalPanel_4 = new HorizontalPanel();
		horizontalPanel_4.setSpacing(5);

		LabelField lblfldEsposicin = new LabelField("Exposici\u00F3n");
		lblfldEsposicin.setStyleName(Constantes.LETRA_NEGRITA);
		horizontalPanel_4.add(lblfldEsposicin);

		TextField<Integer> exposicion = new TextField<Integer>();
		horizontalPanel_4.add(exposicion);
		if(detalle!=null){
			exposicion.setValue(detalle.getexposicion());
		}

		LabelField lblfldPeticionesDeCambio_2 = new LabelField("Peticiones de cambio rechazadas");
		lblfldPeticionesDeCambio_2.setStyleName(Constantes.LETRA_NEGRITA);
		horizontalPanel_4.add(lblfldPeticionesDeCambio_2);

		TextField<Integer> petcambiorecha = new TextField<Integer>();
		if(detalle!=null){
			petcambiorecha.setValue(detalle.getpetcambioreject());
		}
		horizontalPanel_4.add(petcambiorecha);
		fldstCuadroDeMando.add(horizontalPanel_4);
		verticalPanel_2.add(fldstCuadroDeMando);
		fldstCuadroDeMando.setWidth("950");
		fldstCuadroDeMando.setHeading("Cuadro de mando");
		fldstCuadroDeMando.setCollapsible(true);

		LabelField lblfldDescripcin_1 = new LabelField("Descripci\u00F3n");
		lblfldDescripcin_1.setStyleName(Constantes.LETRA_NEGRITA);
		verticalPanel_2.add(lblfldDescripcin_1);
		lblfldDescripcin_1.setWidth("950");
		verticalPanel_2.add(descripcion);
		descripcion.setSize("950", "150");

		LabelField lblfldResumen = new LabelField("Resumen");
		lblfldResumen.setStyleName(Constantes.LETRA_NEGRITA);
		verticalPanel_2.add(lblfldResumen);
		lblfldResumen.setWidth("950");


		verticalPanel_2.add(resumen);
		resumen.setWidth("950");
		tbtmInformacin.add(verticalPanel_2);
		verticalPanel_2.setSize("960", "510");

		tabPanel.add(tbtmInformacin);
		tbtmInformacin.setSize("980", "520");



		generarPanelCambios();


		List<ColumnConfig> configs_2 = new ArrayList<ColumnConfig>();

		VerticalPanel verticalPanel_4 = new VerticalPanel();
		verticalPanel_4.setHeight("480");

		LabelField lblfldRequisitosYaAsociados = new LabelField("Requisitos ya asociados");
		lblfldRequisitosYaAsociados.setStyleName(Constantes.LETRA_NEGRITA);
		verticalPanel_4.add(lblfldRequisitosYaAsociados);

		HorizontalPanel horizontalPanel_10 = new HorizontalPanel();
		verticalPanel_4.add(horizontalPanel_10);
		horizontalPanel_10.setSpacing(5);

		LabelField lblfldReferencia_1 = new LabelField("Referencia");
		horizontalPanel_10.add(lblfldReferencia_1);

		TextField<String> mireferencia = new TextField<String>();
		horizontalPanel_10.add(mireferencia);

		LabelField lblfldNombre_2 = new LabelField("Nombre");
		horizontalPanel_10.add(lblfldNombre_2);

		TextField<String> minombre = new TextField<String>();
		horizontalPanel_10.add(minombre);

		LabelField lblfldDescripcin_2 = new LabelField("Descripci\u00F3n");
		horizontalPanel_10.add(lblfldDescripcin_2);

		TextField<String> misdesc = new TextField<String>();
		horizontalPanel_10.add(misdesc);

		Button btnFiltrar_1 = new Button("Filtrar");
		horizontalPanel_10.add(btnFiltrar_1);

		HorizontalPanel horizontalPanel_8 = new HorizontalPanel();
		verticalPanel_4.add(horizontalPanel_8);

		ColumnConfig clmncnfgId = new ColumnConfig("idRequisito", "ID", 100);
		configs_2.add(clmncnfgId);

		ColumnConfig clmncnfgReferencia_1 = new ColumnConfig("referencia", "Referencia", 150);
		configs_2.add(clmncnfgReferencia_1);

		ColumnConfig clmncnfgNombre_1 = new ColumnConfig("nombre", "Nombre", 150);
		configs_2.add(clmncnfgNombre_1);

		ColumnConfig clmncnfgDescripcin = new ColumnConfig("descripcion", "Descripci\u00F3n", 150);
		configs_2.add(clmncnfgDescripcin);

		ColumnConfig clmncnfgVersin = new ColumnConfig("subcategoria", "Subcategoria", 100);
		configs_2.add(clmncnfgVersin);

		ColumnConfig asdasd = new ColumnConfig("idTipoRequisito", "Tipo", 100);
		configs_2.add(asdasd);

		ColumnConfig clmncnfgPrioridad_1 = new ColumnConfig("prioridad", "Prioridad", 100);
		configs_2.add(clmncnfgPrioridad_1);

		ColumnConfig clmncnfgIncertidumbre = new ColumnConfig("incertidumbre", "Incertidumbre", 120);
		configs_2.add(clmncnfgIncertidumbre);

		final Grid <RequisitoViewBean>grid_2 = new Grid<RequisitoViewBean>(misRequisitos, new ColumnModel(configs_2));
		horizontalPanel_8.add(grid_2);
		grid_2.setSize("890", "150");
		grid_2.setBorders(true);

		HorizontalPanel horizontalPanel_9 = new HorizontalPanel();
		horizontalPanel_9.setSpacing(5);

		Button btnQuitar = new Button("Quitar");
		btnQuitar.addSelectionListener(new SelectionListener<ButtonEvent>() {
			public void componentSelected(ButtonEvent ce) {
				final RequisitoViewBean req = grid_2.getSelectionModel().getSelectedItem();
				AsyncCallback<Boolean> callbackdeasignar = new AsyncCallback<Boolean> (){

					@Override
					public void onFailure(Throwable caught) {
						// TODO Auto-generated method stub
						
					}

					@Override
					public void onSuccess(Boolean result) {
						
						misRequisitos.remove(req);
						Privado.mostrarMensaje("Asociar requisito", "El requisito fue desasociado con exito");						
						otrosRequisitos.add(req);
					}
					
				};
				GWT.log("dESASOCIANDO...");
				bussinessInterfaceServiceAsync.desasociarRequisitoAProyecto(detalle, req, callbackdeasignar);
			}
		});
		horizontalPanel_9.add(btnQuitar);
		verticalPanel_4.add(horizontalPanel_9);

		LabelField lblfldRequisitosEnEl = new LabelField("Requisitos en el sistema");
		verticalPanel_4.add(lblfldRequisitosEnEl);

		HorizontalPanel horizontalPanel_11 = new HorizontalPanel();
		verticalPanel_4.add(horizontalPanel_11);
		horizontalPanel_11.setSpacing(5);

		LabelField lblfldReferencia_2 = new LabelField("Referencia");
		horizontalPanel_11.add(lblfldReferencia_2);

		final TextField<String> referenciareqbuscar = new TextField<String>();
		horizontalPanel_11.add(referenciareqbuscar);

		LabelField lblfldNombre_3 = new LabelField("Nombre");
		horizontalPanel_11.add(lblfldNombre_3);

		final TextField<String> nombrereqbuscar = new TextField<String>();
		horizontalPanel_11.add(nombrereqbuscar);

		final LabelField asd = new LabelField("Descripci\u00F3n");
		horizontalPanel_11.add(asd);

		final TextField <String>descripreqbuscar = new TextField<String>();
		horizontalPanel_11.add(descripreqbuscar);

		Button button = new Button("Filtrar");
		button.addSelectionListener(new SelectionListener<ButtonEvent>() {
			public void componentSelected(ButtonEvent ce) {
				bussinessInterfaceServiceAsync.buscarRequisitos(
						null, descripreqbuscar.getValue(), null, null, null, null,
						null, null, null, null, nombrereqbuscar.getValue(), null
						, referenciareqbuscar.getValue(), null, null, 
						null,null,false, callback);
			}
		});
		horizontalPanel_11.add(button);
		List<ColumnConfig> configs_3 = new ArrayList<ColumnConfig>();

		ColumnConfig columnConfig = new ColumnConfig("idRequisito", "ID", 80);
		configs_3.add(columnConfig);

		ColumnConfig columnConfig_1 = new ColumnConfig("referencia", "Referencia", 80);
		configs_3.add(columnConfig_1);

		ColumnConfig columnConfig_2 = new ColumnConfig("nombre", "Nombre", 80);
		configs_3.add(columnConfig_2);

		ColumnConfig columnConfig_3 = new ColumnConfig("descripcion", "Descripci\u00F3n", 150);
		configs_3.add(columnConfig_3);

		ColumnConfig columnConfig_4 = new ColumnConfig("fechaalta", "Fecha alta", 80);
		configs_3.add(columnConfig_4);

		ColumnConfig columnConfig_5 = new ColumnConfig("idTipoRequisito", "Tipo", 80);
		configs_3.add(columnConfig_5);

		
		ColumnConfig columnConasdfig_5 = new ColumnConfig("subcategoria", "Subcategoria", 150);
		configs_3.add(columnConasdfig_5);
		
		ColumnConfig columnCoasdasdnasdfig_5 = new ColumnConfig("responsable", "responsable", 150);
		configs_3.add(columnCoasdasdnasdfig_5);
		
		final Grid <RequisitoViewBean>grid_3 = new Grid<RequisitoViewBean>(otrosRequisitos, new ColumnModel(configs_3));
		grid_3.setBorders(true);
		verticalPanel_4.add(grid_3);
		grid_3.setSize("890", "150");
		fechaalta.setReadOnly(true);
		HorizontalPanel horizontalPanel_12 = new HorizontalPanel();
		horizontalPanel_12.setSpacing(5);

		LabelField lblfldPrioridad = new LabelField("Prioridad");
		horizontalPanel_12.add(lblfldPrioridad);

		final ComboBox<PrioridadViewBean> prioridad = MasterGenerator.getComboPrioridad();
		horizontalPanel_12.add(prioridad);

		LabelField lblfldIncerticummbre = new LabelField("Incerticummbre");
		horizontalPanel_12.add(lblfldIncerticummbre);

		final ComboBox<IncertidumbreViewBean> incer = MasterGenerator.getComboIncertidumbre();
		horizontalPanel_12.add(incer);
		LabelField lblfldIncerasdasdticummbre = new LabelField("Estado");
		horizontalPanel_12.add(lblfldIncerasdasdticummbre);
		final ComboBox<EstadoProyectoViewBean> situacionEnproyecto = MasterGenerator.getCombosEstadoRequisitoEnProyecto();
		horizontalPanel_12.add(situacionEnproyecto);
		Button btnAgregar = new Button("Agregar");
		btnAgregar.addSelectionListener(new SelectionListener<ButtonEvent>() {
			public void componentSelected(ButtonEvent ce) {
				AsyncCallback<Boolean> callbackAsignar = new AsyncCallback<Boolean> (){

					@Override
					public void onFailure(Throwable caught) {
						// TODO Auto-generated method stub
						
					}

					@Override
					public void onSuccess(Boolean result) {
						RequisitoViewBean req = grid_3.getSelectionModel().getSelectedItem();
						otrosRequisitos.remove(req);
						Privado.mostrarMensaje("Asociar requisito", "El requisito fue asociado con exito");
						req.setincertidumbre(incer.getSelection().get(0));
						req.setprioridad(prioridad.getSelection().get(0));
						req.setsituacion(situacionEnproyecto.getSelection().get(0));
						misRequisitos.add(req);
					}
					
				};
				bussinessInterfaceServiceAsync.asociarRequisitoAProyecto(detalle, grid_3.getSelectionModel().getSelectedItem(),
						prioridad.getSelection().get(0).getid(), incer.getSelection().get(0).getid(), 
						situacionEnproyecto.getSelection().get(0).getid(), callbackAsignar);
			}
		});
		horizontalPanel_12.add(btnAgregar);
		verticalPanel_4.add(horizontalPanel_12);
		tbtmRequisitos.add(verticalPanel_4);
		tabPanel.add(tbtmRequisitos);
		tbtmRequisitos.setSize("990", "519px");
		
		TabItem tbtmHistoria = new TabItem("Historia");
		tbtmHistoria.setSize("990", "");
		
		ContentPanel cp = getHistoria();
		tbtmHistoria.add(cp);
		
		tabPanel.add(tbtmHistoria);
		verticalPanel.add(tabPanel);
		tabPanel.setSize("980", "520");

		HorizontalPanel horizontalPanel_7 = new HorizontalPanel();
		horizontalPanel_7.setSpacing(5);


		btnGuardar.addSelectionListener(new SelectionListener<ButtonEvent>() {
			public void componentSelected(ButtonEvent ce) {
				final AsyncCallback<ProyectoViewBean> callback=new AsyncCallback<ProyectoViewBean> (){

					@Override
					public void onFailure(Throwable caught) {
						// TODO Auto-generated method stub

					}

					@Override
					public void onSuccess(ProyectoViewBean result) {
						Privado.mostrarMensaje("Creacion de proyecto", "El proyecto ha sido creado correctamente:"+result);
						btnGuardar.setEnabled(false);
						referencia.setReadOnly(true);
						responsable.setReadOnly(true);
						nombre.setReadOnly(true);
						estado.setReadOnly(true);
						cliente.setReadOnly(true);

						fechaalta.setValue(new Date());
					}

				};
				try{
					final String  resp=responsable.getSelection().get(0).getidUsuario().toString();

					GWT.log("Cliente:"+cliente.getValue());
					Privado.mostrarMensajeConfirmacion("Alta de proyecto", "¿Esta seguro?", new Command(){

						@Override
						public void execute() {
							bussinessInterfaceServiceAsync.crearProyecto(
									cliente.getValue(), 
									descripcion.getValue(), 
									estado.getSelection().get(0).getnombre(), 
									nombre.getValue(), 
									referencia.getValue(), 
									resp,
									usuario.getidUsuario().toString(), 
									resumen.getValue(),
									callback);

						}});
				}catch(Exception me){me.printStackTrace();}
			}
		});
		horizontalPanel_7.add(btnGuardar);


		SelectionListener<ButtonEvent> listener=new SelectionListener<ButtonEvent>(){

			@Override
			public void componentSelected(ButtonEvent ce) {
				ComandoGestionProyectos com=new ComandoGestionProyectos(usuario);
				com.execute();

			}

		};
		btnVolver.addSelectionListener(listener);

		horizontalPanel_7.add(btnVolver);

		Button btnModificar = new Button("Modificar");
		horizontalPanel_7.add(btnModificar);
		verticalPanel.add(horizontalPanel_7);
		add(verticalPanel);
	}
	private ContentPanel getHistoria() {
		
		String  url = "ExtGWT/chart/open-flash-chart.swf";
	     
	     
	     GWT.log("url:"+url);
	     
	     Chart chart = null;
	     try{
	    	 chart =new Chart(url);
	     }catch(Exception me){me.printStackTrace();}
	     
	     chart.setBorders(true);
	     
	   
	     ChartModel model = new ChartModel("Resumen ejecutivo proyecto",  
	         "font-size: 14px; font-family: Verdana; text-align: center;");  
	     model.setBackgroundColour("fefefe");  
	     model.setLegend(new Legend(Position.TOP, true));  
	     
	     model.setScaleProvider(ScaleProvider.ROUNDED_NEAREST_SCALE_PROVIDER);
	     
	     BarChart bar = new BarChart(BarStyle.GLASS);  
	     bar.setColour("00aa00");  
	     BarDataProvider barProvider = new BarDataProvider("complejidad", "mes");  
	     barProvider.bind(store);  
	     bar.setText("Complejidad");
	     bar.setDataProvider(barProvider);         
	     model.addChartConfig(bar);  
	   
	   
	     bar = new BarChart(BarStyle.GLASS);  
	     bar.setColour("ff6600");
	     bar.setText("Incertidumbre");
	     barProvider = new BarDataProvider("incertidumbre");  
	     barProvider.bind(store);  
	     bar.setDataProvider(barProvider);        
	     model.addChartConfig(bar);  
	      
	     
	     bar = new BarChart(BarStyle.GLASS);  
	     bar.setColour("99FF66");  
	     barProvider = new BarDataProvider("exposicion");  
	     barProvider.bind(store);  
	     bar.setText("Exposicion");
	     bar.setDataProvider(barProvider);        
	     model.addChartConfig(bar);  
	     
	        	     
	     
	     LineChart line = new LineChart();  
	     line.setAnimateOnShow(true);  
	     line.setTooltip("Exposicion");  
	     line.setColour("99FF66");       
	     LineDataProvider lineProvider = new LineDataProvider("exposicion");  
	     lineProvider.bind(store);  
	     line.setDataProvider(lineProvider);  
	     model.addChartConfig(line);  
	   
	     
	     LineChart line3 = new LineChart();  
	     line3.setAnimateOnShow(true);  
	     line3.setTooltip("Complejidad");  
	     line3.setColour("00aa00");       
	     LineDataProvider lineProvider3 = new LineDataProvider("complejidad");  
	     lineProvider3.bind(store);  
	     line3.setDataProvider(lineProvider3);  
	     model.addChartConfig(line3);  
	     
	     LineChart line2 = new LineChart();  
	     line2.setAnimateOnShow(true);  
	     line2.setTooltip("Incertidumbre");  
	     line2.setColour("ff6600");       
	     LineDataProvider lineProvider2 = new LineDataProvider("incertidumbre");  
	     lineProvider2.bind(store);  
	     line2.setDataProvider(lineProvider2);  
	     model.addChartConfig(line2);  
	     
	     
	     chart.setChartModel(model); 
	     
	     ContentPanel cp = new ContentPanel(new FitLayout());  
         cp.setHeading("Proyecto");
         cp.setHeight("480");
         cp.add(chart);  
	     
	     
	       
	     return cp; 
		
	}
	private void generarPanelCambios() {
		VerticalPanel verticalPanel_1 = new VerticalPanel();
		verticalPanel_1.setSpacing(10);

		HorizontalPanel horizontalPanel = new HorizontalPanel();
		horizontalPanel.setSpacing(5);

		LabelField lblfldNombre = new LabelField("Referencia");
		horizontalPanel.add(lblfldNombre);

		TextField <String>referencias = new TextField<String>();
		horizontalPanel.add(referencias);

		LabelField lblfldEstado = new LabelField("Estado");
		horizontalPanel.add(lblfldEstado);

		TextField <String>estadoFiltro = new TextField<String>();

		horizontalPanel.add(estadoFiltro);


		LabelField lblfldDescripcin = new LabelField("Descripci\u00F3n");
		horizontalPanel.add(lblfldDescripcin);

		TextField<String> descrip = new TextField<String>();
		horizontalPanel.add(descrip);


		Button btnFiltrar = new Button("Filtrar");
		horizontalPanel.add(btnFiltrar);
		verticalPanel_1.add(horizontalPanel);
		horizontalPanel.setWidth("990");
		List<ColumnConfig> configs = new ArrayList<ColumnConfig>();

		ColumnConfig clmncnfgReferencia = new ColumnConfig("referencia", "Referencia", 150);
		configs.add(clmncnfgReferencia);

		ColumnConfig clmncnfgFechaAlta = new ColumnConfig("fechaalta", "Fecha alta", 150);
		configs.add(clmncnfgFechaAlta);

		ColumnConfig clmncnfgMotivo = new ColumnConfig("motivo", "Motivo", 150);
		configs.add(clmncnfgMotivo);

		ColumnConfig clmncnfgComplejidad = new ColumnConfig("id", "Complejidad", 150);
		configs.add(clmncnfgComplejidad);

		ColumnConfig clmncnfgPrioridad = new ColumnConfig("id", "Prioridad", 150);
		configs.add(clmncnfgPrioridad);

		ColumnConfig clmncnfgRequisitosAfectados = new ColumnConfig("id", "Requisitos afectados", 150);
		configs.add(clmncnfgRequisitosAfectados);

		Grid grid = new Grid(new ListStore(), new ColumnModel(configs));
		grid.setSize("970", "300");
		verticalPanel_1.add(grid);
		grid.setBorders(true);

		HorizontalPanel horizontalPanel_1 = new HorizontalPanel();
		horizontalPanel_1.setSpacing(5);

		Button btnAltaDeNuevo = new Button("Alta de Nuevo Cambio");
		horizontalPanel_1.add(btnAltaDeNuevo);
		verticalPanel_1.add(horizontalPanel_1);
		tbtmCambios.setEnabled(false);
		tbtmCambios.add(verticalPanel_1);
		tabPanel.add(tbtmCambios);
		tbtmCambios.setWidth("990");
		
		
		
		
	}

}
